package 集合List;

import java.util.ArrayList;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Set;
/**
 * @描述: 
 * @作者: 宋利军 
 */
public class 如何去除List集合中重复的元素1 {
	public static void main(String[] args) {
		 List<String> arr = new ArrayList<String>();
         arr.add("aaa");
         arr.add("bbb");
         arr.add("aaa");
         arr.add("ccc");
//         System.out.println("-----------1、通过循环进行删除----------");
//         arr = removeDuplicate1(arr);
//         System.out.println("-----------2、通过HashSet删除----------");
//         arr = removeDuplicate2(arr);
//         System.out.println("-----------3、删除重复元素，并保持顺序。----------");
//         arr = removeDuplicateWithOrder(arr);
         System.out.println("-----------getNewList----------");
         arr = getNewList(arr);
         System.out.println(arr);
	}
	
	//1、通过循环进行删除
	public   static   List<String>  removeDuplicate1(List list)   { 
		   for  ( int  i  =   0 ; i  <  list.size()  -   1 ; i ++ )   { 
		    for  ( int  j  =  list.size()  -   1 ; j  >  i; j -- )   { 
		      if  (list.get(j).equals(list.get(i)))   { 
		        list.remove(j); 
		      } 
		    } 
		  } 
		  System.out.println(list);
		return list; 
		} 
	
	//2、通过HashSet删除
	public   static   List<String>  removeDuplicate2(List list)   { 
	    HashSet h  =   new  HashSet(list); 
	    list.clear(); 
	    list.addAll(h); 
	    System.out.println(list);
		return list; 
	} 

	
	//3、删除重复元素，并保持顺序。（我没试）
	public   static   List<String>  removeDuplicateWithOrder(List list)   { 
	      Set set  =   new  HashSet(); 
	      List newList  =   new  ArrayList(); 
	   for  (Iterator iter  =  list.iterator(); iter.hasNext();)   { 
	         Object element  =  iter.next(); 
	         if  (set.add(element)) 
	            newList.add(element); 
	     } 
	     list.clear(); 
	     list.addAll(newList); 
	     System.out.println(list);
		return newList; 
	} 
	

	//4、定义一个方法，调用即可。
	public static List<String> getNewList(List<String> li){
        List<String> list = new ArrayList<String>();
        for(int i=0; i<li.size(); i++){
            String str = li.get(i);  //获取传入集合对象的每一个元素
            if(!list.contains(str)){   //查看新集合中是否有指定的元素，如果没有则加入
                list.add(str);
            }
        }
        return list;  //返回集合
    }
	
	
}